#include "Objects.h"

set<object*,object_depth> objects;
///////////////////////////////////////////////////////////////
// Depth stuff
///////////////////////////////////////////////////////////////
int depth::operator [](unsigned int index){
	return z[index];
}
void depth::operator =(int value){
	z[size] = value;
	size++;
}
depth::depth(){
	size = 0;
	for(auto i=0;i<8;i++){
		z[i] = 0;
	}
}
bool object_depth::operator()(object* a, object* b){
	for(auto i=0;i<8;i++){
		if(a->z[i]<b->z[i]){
			return true;
		}
		if(a->z[i]>b->z[i]){
			return false;
		}
	}
	return a>b;
}
///////////////////////////////////////////////////////////////
// The base object class
///////////////////////////////////////////////////////////////
object::object(){
	x = 0;
	y = 0;
	objects.insert(this);
}
object::~object(){
	objects.erase(this);
}
void object::sort(){
	objects.erase(this);
	objects.insert(this);
}
///////////////////////////////////////////////////////////////
// other stuff
///////////////////////////////////////////////////////////////
tile::tile(){
	spr = 0;
}
void tile::draw(){
	draw_sprite(spr,x,y);
}
obj::obj(){
	spr = 0;
}
void obj::draw(){
	draw_sprite(spr,x,y);
}